[INFO] cloning repository https://github.com/erslie/gbemu-rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/erslie/gbemu-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ferslie%2Fgbemu-rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ferslie%2Fgbemu-rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f79c9a20842f5ea79ff826e25e2a692e1c1da297
[INFO] fixing erslie/gbemu-rust against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=start=2015 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ferslie%2Fgbemu-rust" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/erslie/gbemu-rust
[INFO] finished tweaking git repo https://github.com/erslie/gbemu-rust
[INFO] tweaked toml for git repo https://github.com/erslie/gbemu-rust written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/erslie/gbemu-rust on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/erslie/gbemu-rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded backtrace-on-stack-overflow v0.3.0
[INFO] [stderr]   Downloaded sdl2 v0.38.0
[INFO] [stderr]   Downloaded sdl2-sys v0.38.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] b3c0a72fbdcc0f0f9060dffbbc6f5a9126cf3be18412f721d4a60bb48ba8c2d5
[INFO] running `Command { std: "docker" "start" "b3c0a72fbdcc0f0f9060dffbbc6f5a9126cf3be18412f721d4a60bb48ba8c2d5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b3c0a72fbdcc0f0f9060dffbbc6f5a9126cf3be18412f721d4a60bb48ba8c2d5" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b3c0a72fbdcc0f0f9060dffbbc6f5a9126cf3be18412f721d4a60bb48ba8c2d5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b3c0a72fbdcc0f0f9060dffbbc6f5a9126cf3be18412f721d4a60bb48ba8c2d5" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=start=2015", kill_on_drop: false }`
[INFO] [stderr]    Compiling version-compare v0.1.1
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking addr2line v0.25.1
[INFO] [stderr]     Checking rustc-demangle v0.1.26
[INFO] [stderr]    Compiling sdl2 v0.38.0
[INFO] [stderr]    Compiling sdl2-sys v0.38.0
[INFO] [stderr]     Checking nix v0.23.2
[INFO] [stderr]     Checking object v0.37.3
[INFO] [stderr]     Checking backtrace v0.3.76
[INFO] [stderr]     Checking backtrace-on-stack-overflow v0.3.0
[INFO] [stderr]     Checking gbemu-rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::peripherals::Peripherals`
[INFO] [stdout]  --> src/interruputs.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::peripherals::Peripherals;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/peripherals.rs:4:26
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::interruputs::{self, Interrupts};
[INFO] [stdout]   |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> src/operand.rs:12:34
[INFO] [stdout]     |
[INFO] [stdout]  12 |         $cpu.exec_state.step = $d;
[INFO] [stdout]     |                                  ^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/instruction.rs:227:24
[INFO] [stdout]     |
[INFO] [stdout] 227 |                 return go!(self, 2);
[INFO] [stdout]     |                        ------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: `#[deny(semicolon_in_expressions_from_macros)]` (part of `#[deny(future_incompatible)]`) on by default
[INFO] [stdout]     = note: this error originates in the macro `go` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> src/operand.rs:12:34
[INFO] [stdout]     |
[INFO] [stdout]  12 |         $cpu.exec_state.step = $d;
[INFO] [stdout]     |                                  ^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/instruction.rs:851:24
[INFO] [stdout]     |
[INFO] [stdout] 851 |                 return go!(self, 1);
[INFO] [stdout]     |                        ------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this error originates in the macro `go` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> src/operand.rs:12:34
[INFO] [stdout]     |
[INFO] [stdout]  12 |         $cpu.exec_state.step = $d;
[INFO] [stdout]     |                                  ^
[INFO] [stdout] ...
[INFO] [stdout] 280 |             4: return Some(go!(self, 0)),
[INFO] [stdout]     |                            ------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this error originates in the macro `go` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> src/operand.rs:12:34
[INFO] [stdout]     |
[INFO] [stdout]  12 |         $cpu.exec_state.step = $d;
[INFO] [stdout]     |                                  ^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/cpu.rs:576:24
[INFO] [stdout]     |
[INFO] [stdout] 576 |                 return go!(self, 1);
[INFO] [stdout]     |                        ------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this error originates in the macro `go` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::peripherals::Peripherals`
[INFO] [stdout]  --> src/interruputs.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::peripherals::Peripherals;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/peripherals.rs:4:26
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::interruputs::{self, Interrupts};
[INFO] [stdout]   |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> src/operand.rs:12:34
[INFO] [stdout]     |
[INFO] [stdout]  12 |         $cpu.exec_state.step = $d;
[INFO] [stdout]     |                                  ^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/instruction.rs:227:24
[INFO] [stdout]     |
[INFO] [stdout] 227 |                 return go!(self, 2);
[INFO] [stdout]     |                        ------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: `#[deny(semicolon_in_expressions_from_macros)]` (part of `#[deny(future_incompatible)]`) on by default
[INFO] [stdout]     = note: this error originates in the macro `go` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> src/operand.rs:12:34
[INFO] [stdout]     |
[INFO] [stdout]  12 |         $cpu.exec_state.step = $d;
[INFO] [stdout]     |                                  ^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/instruction.rs:851:24
[INFO] [stdout]     |
[INFO] [stdout] 851 |                 return go!(self, 1);
[INFO] [stdout]     |                        ------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this error originates in the macro `go` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread::sleep`
[INFO] [stdout]    --> src/instruction.rs:865:9
[INFO] [stdout]     |
[INFO] [stdout] 865 |     use std::thread::sleep;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]    --> src/instruction.rs:866:9
[INFO] [stdout]     |
[INFO] [stdout] 866 |     use std::time::Duration;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cpu`
[INFO] [stdout]    --> src/instruction.rs:868:17
[INFO] [stdout]     |
[INFO] [stdout] 868 |     use crate::{cpu, instruction::*};
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> src/operand.rs:12:34
[INFO] [stdout]     |
[INFO] [stdout]  12 |         $cpu.exec_state.step = $d;
[INFO] [stdout]     |                                  ^
[INFO] [stdout] ...
[INFO] [stdout] 280 |             4: return Some(go!(self, 0)),
[INFO] [stdout]     |                            ------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this error originates in the macro `go` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> src/operand.rs:12:34
[INFO] [stdout]     |
[INFO] [stdout]  12 |         $cpu.exec_state.step = $d;
[INFO] [stdout]     |                                  ^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/cpu.rs:576:24
[INFO] [stdout]     |
[INFO] [stdout] 576 |                 return go!(self, 1);
[INFO] [stdout]     |                        ------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this error originates in the macro `go` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bus`
[INFO] [stdout]   --> src/operand.rs:79:27
[INFO] [stdout]    |
[INFO] [stdout] 79 |     fn write16(&mut self, bus: &mut Peripherals, dst: Reg16, val: u16) -> Option<()> {
[INFO] [stdout]    |                           ^^^ help: if this is intentional, prefix it with an underscore: `_bus`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bus`
[INFO] [stdout]    --> src/operand.rs:105:26
[INFO] [stdout]     |
[INFO] [stdout] 105 |     fn write8(&mut self, bus: &mut Peripherals, dst: Imm8, val: u8) -> Option<()> {
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_bus`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/operand.rs:105:49
[INFO] [stdout]     |
[INFO] [stdout] 105 |     fn write8(&mut self, bus: &mut Peripherals, dst: Imm8, val: u8) -> Option<()> {
[INFO] [stdout]     |                                                 ^^^ help: if this is intentional, prefix it with an underscore: `_dst`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]    --> src/operand.rs:105:60
[INFO] [stdout]     |
[INFO] [stdout] 105 |     fn write8(&mut self, bus: &mut Peripherals, dst: Imm8, val: u8) -> Option<()> {
[INFO] [stdout]     |                                                            ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bus`
[INFO] [stdout]    --> src/operand.rs:128:27
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn write16(&mut self, bus: &mut Peripherals, dst: Imm16, val: u16) -> Option<()> {
[INFO] [stdout]     |                           ^^^ help: if this is intentional, prefix it with an underscore: `_bus`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/operand.rs:128:50
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn write16(&mut self, bus: &mut Peripherals, dst: Imm16, val: u16) -> Option<()> {
[INFO] [stdout]     |                                                  ^^^ help: if this is intentional, prefix it with an underscore: `_dst`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]    --> src/operand.rs:128:62
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn write16(&mut self, bus: &mut Peripherals, dst: Imm16, val: u16) -> Option<()> {
[INFO] [stdout]     |                                                              ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bus`
[INFO] [stdout]    --> src/operand.rs:254:26
[INFO] [stdout]     |
[INFO] [stdout] 254 |     fn read16(&mut self, bus: &Peripherals, src: Direct16) -> Option<u16> {
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_bus`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/operand.rs:254:45
[INFO] [stdout]     |
[INFO] [stdout] 254 |     fn read16(&mut self, bus: &Peripherals, src: Direct16) -> Option<u16> {
[INFO] [stdout]     |                                             ^^^ help: if this is intentional, prefix it with an underscore: `_src`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/operand.rs:258:50
[INFO] [stdout]     |
[INFO] [stdout] 258 |     fn write16(&mut self, bus: &mut Peripherals, dst: Direct16, val: u16) -> Option<()> {
[INFO] [stdout]     |                                                  ^^^ help: if this is intentional, prefix it with an underscore: `_dst`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/cpu.rs:551:13
[INFO] [stdout]     |
[INFO] [stdout] 551 |             _    => panic!("Not implemented: {:02x}", self.ctx.opcode),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/cpu.rs:551:13
[INFO] [stdout]     |
[INFO] [stdout] 295 |             0x00 => self.rlc(bus, Reg8::B),
[INFO] [stdout]     |             ---- matches some of the same values
[INFO] [stdout] 296 |             0x10 => self.rl(bus, Reg8::B),
[INFO] [stdout]     |             ---- matches some of the same values
[INFO] [stdout] 297 |             0x20 => self.sla(bus, Reg8::B),
[INFO] [stdout]     |             ---- matches some of the same values
[INFO] [stdout] 298 |             0x30 => self.swap(bus, Reg8::B),
[INFO] [stdout]     |             ---- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 551 |             _    => panic!("Not implemented: {:02x}", self.ctx.opcode),
[INFO] [stdout]     |             ^ ...and 252 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/cpu.rs:570:21
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     VBLANK => 0x0040,
[INFO] [stdout]     |                     ------ matches any value
[INFO] [stdout] 570 |                     STAT   => 0x0048,
[INFO] [stdout]     |                     ^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match against the value of constant `VBLANK` instead of introducing a new catch-all binding
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     interruputs::VBLANK => 0x0040,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/cpu.rs:571:21
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     VBLANK => 0x0040,
[INFO] [stdout]     |                     ------ matches any value
[INFO] [stdout] 570 |                     STAT   => 0x0048,
[INFO] [stdout] 571 |                     TIMER  => 0x0050,
[INFO] [stdout]     |                     ^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match against the value of constant `VBLANK` instead of introducing a new catch-all binding
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     interruputs::VBLANK => 0x0040,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/cpu.rs:572:21
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     VBLANK => 0x0040,
[INFO] [stdout]     |                     ------ matches any value
[INFO] [stdout] ...
[INFO] [stdout] 572 |                     SERIAL => 0x0058,
[INFO] [stdout]     |                     ^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match against the value of constant `VBLANK` instead of introducing a new catch-all binding
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     interruputs::VBLANK => 0x0040,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/cpu.rs:573:21
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     VBLANK => 0x0040,
[INFO] [stdout]     |                     ------ matches any value
[INFO] [stdout] ...
[INFO] [stdout] 573 |                     JOYPAD => 0x0060,
[INFO] [stdout]     |                     ^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match against the value of constant `VBLANK` instead of introducing a new catch-all binding
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     interruputs::VBLANK => 0x0040,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/cpu.rs:574:21
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     VBLANK => 0x0040,
[INFO] [stdout]     |                     ------ matches any value
[INFO] [stdout] ...
[INFO] [stdout] 574 |                     _ => panic!("Invalid interrupt: {:02X}", highest_int),
[INFO] [stdout]     |                     ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match against the value of constant `VBLANK` instead of introducing a new catch-all binding
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     interruputs::VBLANK => 0x0040,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `VBLANK`
[INFO] [stdout]    --> src/cpu.rs:569:21
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     VBLANK => 0x0040,
[INFO] [stdout]     |                     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `VBLANK`
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     interruputs::VBLANK => 0x0040,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     _VBLANK => 0x0040,
[INFO] [stdout]     |                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `STAT`
[INFO] [stdout]    --> src/cpu.rs:570:21
[INFO] [stdout]     |
[INFO] [stdout] 570 |                     STAT   => 0x0048,
[INFO] [stdout]     |                     ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `STAT`
[INFO] [stdout]     |
[INFO] [stdout] 570 |                     interruputs::STAT   => 0x0048,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 570 |                     _STAT   => 0x0048,
[INFO] [stdout]     |                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `TIMER`
[INFO] [stdout]    --> src/cpu.rs:571:21
[INFO] [stdout]     |
[INFO] [stdout] 571 |                     TIMER  => 0x0050,
[INFO] [stdout]     |                     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TIMER`
[INFO] [stdout]     |
[INFO] [stdout] 571 |                     interruputs::TIMER  => 0x0050,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 571 |                     _TIMER  => 0x0050,
[INFO] [stdout]     |                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `SERIAL`
[INFO] [stdout]    --> src/cpu.rs:572:21
[INFO] [stdout]     |
[INFO] [stdout] 572 |                     SERIAL => 0x0058,
[INFO] [stdout]     |                     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `SERIAL`
[INFO] [stdout]     |
[INFO] [stdout] 572 |                     interruputs::SERIAL => 0x0058,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 572 |                     _SERIAL => 0x0058,
[INFO] [stdout]     |                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `JOYPAD`
[INFO] [stdout]    --> src/cpu.rs:573:21
[INFO] [stdout]     |
[INFO] [stdout] 573 |                     JOYPAD => 0x0060,
[INFO] [stdout]     |                     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `JOYPAD`
[INFO] [stdout]     |
[INFO] [stdout] 573 |                     interruputs::JOYPAD => 0x0060,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 573 |                     _JOYPAD => 0x0060,
[INFO] [stdout]     |                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]   --> src/peripherals.rs:77:24
[INFO] [stdout]    |
[INFO] [stdout] 77 |         let mut peri = Peripherals::new(Bootrom::new(vec![0,0]));
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^------------------------- argument #2 of type `Cartridge` is missing
[INFO] [stdout]    |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/peripherals.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new(bootrom: Bootrom, cartridge: Cartridge) -> Self {
[INFO] [stdout]    |            ^^^                   --------------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 77 |         let mut peri = Peripherals::new(Bootrom::new(vec![0,0]), /* Cartridge */);
[INFO] [stdout]    |                                                                +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `gbemu-rust` (lib) due to 8 previous errors; 40 warnings emitted
[INFO] [stdout] warning: unused variable: `scale`
[INFO] [stdout]   --> src/lcd.rs:11:27
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(sdl: &Sdl, scale: u32) -> LCD {
[INFO] [stdout]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_scale`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unused variable: `low_bank`
[INFO] [stdout]   --> src/mbc.rs:55:17
[INFO] [stdout]    |
[INFO] [stdout] 55 |                 low_bank,
[INFO] [stdout]    |                 ^^^^^^^^ help: try ignoring the field: `low_bank: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VBLANK` is never used
[INFO] [stdout]   --> src/interruputs.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const VBLANK: u8 = 1 << 0;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STAT` is never used
[INFO] [stdout]   --> src/interruputs.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const STAT: u8 = 1 << 1;
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TIMER` is never used
[INFO] [stdout]   --> src/interruputs.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const TIMER: u8 = 1 << 2;
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SERIAL` is never used
[INFO] [stdout]   --> src/interruputs.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const SERIAL: u8 = 1 << 3;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOYPAD` is never used
[INFO] [stdout]   --> src/interruputs.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const JOYPAD: u8 = 1 << 4;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `irq` is never used
[INFO] [stdout]   --> src/interruputs.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl Interrupts {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 26 |     pub fn irq(&mut self, val: u8) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WINDOW_TILE_MAP` is never used
[INFO] [stdout]   --> src/ppu.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const WINDOW_TILE_MAP: u8 = 1 << 6;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WINDOW_ENABLE` is never used
[INFO] [stdout]   --> src/ppu.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 | const WINDOW_ENABLE: u8 = 1 << 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_SIZE` is never used
[INFO] [stdout]   --> src/ppu.rs:38:7
[INFO] [stdout]    |
[INFO] [stdout] 38 | const SPRITE_SIZE: u8 = 1 << 2;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_ENABLE` is never used
[INFO] [stdout]   --> src/ppu.rs:39:7
[INFO] [stdout]    |
[INFO] [stdout] 39 | const SPRITE_ENABLE: u8 = 1 << 1;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LYC_EQ_LY_INT` is never used
[INFO] [stdout]   --> src/ppu.rs:43:7
[INFO] [stdout]    |
[INFO] [stdout] 43 | const LYC_EQ_LY_INT: u8 = 1 << 6;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OAM_SCAN_INT` is never used
[INFO] [stdout]   --> src/ppu.rs:44:7
[INFO] [stdout]    |
[INFO] [stdout] 44 | const OAM_SCAN_INT: u8 = 1 << 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VBLANK_INT` is never used
[INFO] [stdout]   --> src/ppu.rs:45:7
[INFO] [stdout]    |
[INFO] [stdout] 45 | const VBLANK_INT: u8 = 1 << 4;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HBLANK_INT` is never used
[INFO] [stdout]   --> src/ppu.rs:46:7
[INFO] [stdout]    |
[INFO] [stdout] 46 | const HBLANK_INT: u8 = 1 << 3;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused bitwise operation that must be used
[INFO] [stdout]    --> src/instruction.rs:675:13
[INFO] [stdout]     |
[INFO] [stdout] 675 |             v & 1 << bit;
[INFO] [stdout]     |             ^^^^^^^^^^^^ the bitwise operation produces a value
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 675 |             let _ = v & 1 << bit;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 2 arguments were supplied
[INFO] [stdout]   --> src/peripherals.rs:78:14
[INFO] [stdout]    |
[INFO] [stdout] 78 |         peri.write(0xC000, 0x42);
[INFO] [stdout]    |              ^^^^^ ------ argument #1 of type `&mut Interrupts` is missing
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/peripherals.rs:45:16
[INFO] [stdout]    |
[INFO] [stdout] 45 |         pub fn write(&mut self, interrupts: &mut Interrupts, addr: u16, val: u8) {
[INFO] [stdout]    |                ^^^^^            ---------------------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 78 -         peri.write(0xC000, 0x42);
[INFO] [stdout] 78 +         peri.write(/* &mut Interrupts */, 0x42, 0xC000);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 2 arguments but 1 argument was supplied
[INFO] [stdout]   --> src/peripherals.rs:79:31
[INFO] [stdout]    |
[INFO] [stdout] 79 |         assert_eq!(0x42, peri.read(0xC000));
[INFO] [stdout]    |                               ^^^^ ------ argument #1 of type `&Interrupts` is missing
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/peripherals.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn read(&self, interrupts: &Interrupts, addr: u16) -> u8 {
[INFO] [stdout]    |            ^^^^        -----------------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 79 |         assert_eq!(0x42, peri.read(/* &Interrupts */, 0xC000));
[INFO] [stdout]    |                                    ++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]   --> src/peripherals.rs:83:24
[INFO] [stdout]    |
[INFO] [stdout] 83 |         let mut peri = Peripherals::new(Bootrom::new(vec![0,0]));
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^------------------------- argument #2 of type `Cartridge` is missing
[INFO] [stdout]    |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/peripherals.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new(bootrom: Bootrom, cartridge: Cartridge) -> Self {
[INFO] [stdout]    |            ^^^                   --------------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 83 |         let mut peri = Peripherals::new(Bootrom::new(vec![0,0]), /* Cartridge */);
[INFO] [stdout]    |                                                                +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 2 arguments were supplied
[INFO] [stdout]   --> src/peripherals.rs:84:14
[INFO] [stdout]    |
[INFO] [stdout] 84 |         peri.write(0xFF80, 0x42);
[INFO] [stdout]    |              ^^^^^ ------ argument #1 of type `&mut Interrupts` is missing
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/peripherals.rs:45:16
[INFO] [stdout]    |
[INFO] [stdout] 45 |         pub fn write(&mut self, interrupts: &mut Interrupts, addr: u16, val: u8) {
[INFO] [stdout]    |                ^^^^^            ---------------------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 84 -         peri.write(0xFF80, 0x42);
[INFO] [stdout] 84 +         peri.write(/* &mut Interrupts */, 0x42, 0xFF80);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 2 arguments but 1 argument was supplied
[INFO] [stdout]   --> src/peripherals.rs:85:31
[INFO] [stdout]    |
[INFO] [stdout] 85 |         assert_eq!(0x42, peri.read(0xFF80));
[INFO] [stdout]    |                               ^^^^ ------ argument #1 of type `&Interrupts` is missing
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/peripherals.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn read(&self, interrupts: &Interrupts, addr: u16) -> u8 {
[INFO] [stdout]    |            ^^^^        -----------------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 85 |         assert_eq!(0x42, peri.read(/* &Interrupts */, 0xFF80));
[INFO] [stdout]    |                                    ++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]   --> src/peripherals.rs:89:24
[INFO] [stdout]    |
[INFO] [stdout] 89 |         let mut peri = Peripherals::new(Bootrom::new(vec![0,0]));
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^------------------------- argument #2 of type `Cartridge` is missing
[INFO] [stdout]    |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/peripherals.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new(bootrom: Bootrom, cartridge: Cartridge) -> Self {
[INFO] [stdout]    |            ^^^                   --------------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 89 |         let mut peri = Peripherals::new(Bootrom::new(vec![0,0]), /* Cartridge */);
[INFO] [stdout]    |                                                                +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 2 arguments were supplied
[INFO] [stdout]   --> src/peripherals.rs:90:14
[INFO] [stdout]    |
[INFO] [stdout] 90 |         peri.write(0xFF50, 1);
[INFO] [stdout]    |              ^^^^^ ------ argument #1 of type `&mut Interrupts` is missing
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/peripherals.rs:45:16
[INFO] [stdout]    |
[INFO] [stdout] 45 |         pub fn write(&mut self, interrupts: &mut Interrupts, addr: u16, val: u8) {
[INFO] [stdout]    |                ^^^^^            ---------------------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 90 -         peri.write(0xFF50, 1);
[INFO] [stdout] 90 +         peri.write(/* &mut Interrupts */, 1, 0xFF50);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]    --> src/instruction.rs:874:9
[INFO] [stdout]     |
[INFO] [stdout] 874 |         Peripherals::new(Bootrom::new(vec![0x12, 0x34]))
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^-------------------------------- argument #2 of type `Cartridge` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/peripherals.rs:15:12
[INFO] [stdout]     |
[INFO] [stdout]  15 |     pub fn new(bootrom: Bootrom, cartridge: Cartridge) -> Self {
[INFO] [stdout]     |            ^^^                   --------------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 874 |         Peripherals::new(Bootrom::new(vec![0x12, 0x34]), /* Cartridge */)
[INFO] [stdout]     |                                                        +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `exec_state` and `interrupts` in initializer of `cpu::Cpu`
[INFO] [stdout]    --> src/instruction.rs:877:9
[INFO] [stdout]     |
[INFO] [stdout] 877 |         Cpu { regs:Registres::default(), ctx: Ctx::default() }
[INFO] [stdout]     |         ^^^ missing `exec_state` and `interrupts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `exec_state` and `interrupts` in initializer of `cpu::Cpu`
[INFO] [stdout]    --> src/operand.rs:296:23
[INFO] [stdout]     |
[INFO] [stdout] 296 |         let mut cpu = Cpu { regs:Registres::default(), ctx: Ctx::default() };
[INFO] [stdout]     |                       ^^^ missing `exec_state` and `interrupts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]    --> src/operand.rs:297:24
[INFO] [stdout]     |
[INFO] [stdout] 297 |         let mut peri = Peripherals::new(Bootrom::new(vec![0,0x00]));
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^---------------------------- argument #2 of type `Cartridge` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/peripherals.rs:15:12
[INFO] [stdout]     |
[INFO] [stdout]  15 |     pub fn new(bootrom: Bootrom, cartridge: Cartridge) -> Self {
[INFO] [stdout]     |            ^^^                   --------------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 297 |         let mut peri = Peripherals::new(Bootrom::new(vec![0,0x00]), /* Cartridge */);
[INFO] [stdout]     |                                                                   +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `exec_state` and `interrupts` in initializer of `cpu::Cpu`
[INFO] [stdout]    --> src/operand.rs:303:23
[INFO] [stdout]     |
[INFO] [stdout] 303 |         let mut cpu = Cpu { regs:Registres::default(), ctx: Ctx::default() };
[INFO] [stdout]     |                       ^^^ missing `exec_state` and `interrupts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]    --> src/operand.rs:304:24
[INFO] [stdout]     |
[INFO] [stdout] 304 |         let mut peri = Peripherals::new(Bootrom::new(vec![0,0x00]));
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^---------------------------- argument #2 of type `Cartridge` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/peripherals.rs:15:12
[INFO] [stdout]     |
[INFO] [stdout]  15 |     pub fn new(bootrom: Bootrom, cartridge: Cartridge) -> Self {
[INFO] [stdout]     |            ^^^                   --------------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 304 |         let mut peri = Peripherals::new(Bootrom::new(vec![0,0x00]), /* Cartridge */);
[INFO] [stdout]     |                                                                   +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `exec_state` and `interrupts` in initializer of `cpu::Cpu`
[INFO] [stdout]    --> src/operand.rs:311:23
[INFO] [stdout]     |
[INFO] [stdout] 311 |         let mut cpu = Cpu { regs:Registres::default(), ctx: Ctx::default() };
[INFO] [stdout]     |                       ^^^ missing `exec_state` and `interrupts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]    --> src/operand.rs:312:24
[INFO] [stdout]     |
[INFO] [stdout] 312 |         let mut peri = Peripherals::new(Bootrom::new(vec![0,0x00]));
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^---------------------------- argument #2 of type `Cartridge` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/peripherals.rs:15:12
[INFO] [stdout]     |
[INFO] [stdout]  15 |     pub fn new(bootrom: Bootrom, cartridge: Cartridge) -> Self {
[INFO] [stdout]     |            ^^^                   --------------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 312 |         let mut peri = Peripherals::new(Bootrom::new(vec![0,0x00]), /* Cartridge */);
[INFO] [stdout]     |                                                                   +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `exec_state` and `interrupts` in initializer of `cpu::Cpu`
[INFO] [stdout]    --> src/operand.rs:318:23
[INFO] [stdout]     |
[INFO] [stdout] 318 |         let mut cpu = Cpu { regs:Registres::default(), ctx: Ctx::default() };
[INFO] [stdout]     |                       ^^^ missing `exec_state` and `interrupts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]    --> src/operand.rs:320:24
[INFO] [stdout]     |
[INFO] [stdout] 320 |         let mut peri = Peripherals::new(Bootrom::new(vec![0x12,0x34]));
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^------------------------------- argument #2 of type `Cartridge` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/peripherals.rs:15:12
[INFO] [stdout]     |
[INFO] [stdout]  15 |     pub fn new(bootrom: Bootrom, cartridge: Cartridge) -> Self {
[INFO] [stdout]     |            ^^^                   --------------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 320 |         let mut peri = Peripherals::new(Bootrom::new(vec![0x12,0x34]), /* Cartridge */);
[INFO] [stdout]     |                                                                      +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `exec_state` and `interrupts` in initializer of `cpu::Cpu`
[INFO] [stdout]    --> src/cpu.rs:603:23
[INFO] [stdout]     |
[INFO] [stdout] 603 |         let mut cpu = Cpu { regs:Registres::default(), ctx: Ctx::default() };
[INFO] [stdout]     |                       ^^^ missing `exec_state` and `interrupts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]    --> src/cpu.rs:604:24
[INFO] [stdout]     |
[INFO] [stdout] 604 |         let mut peri = Peripherals::new(Bootrom::new(vec![0,0x00]));
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^---------------------------- argument #2 of type `Cartridge` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/peripherals.rs:15:12
[INFO] [stdout]     |
[INFO] [stdout]  15 |     pub fn new(bootrom: Bootrom, cartridge: Cartridge) -> Self {
[INFO] [stdout]     |            ^^^                   --------------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 604 |         let mut peri = Peripherals::new(Bootrom::new(vec![0,0x00]), /* Cartridge */);
[INFO] [stdout]     |                                                                   +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bus`
[INFO] [stdout]   --> src/operand.rs:79:27
[INFO] [stdout]    |
[INFO] [stdout] 79 |     fn write16(&mut self, bus: &mut Peripherals, dst: Reg16, val: u16) -> Option<()> {
[INFO] [stdout]    |                           ^^^ help: if this is intentional, prefix it with an underscore: `_bus`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bus`
[INFO] [stdout]    --> src/operand.rs:105:26
[INFO] [stdout]     |
[INFO] [stdout] 105 |     fn write8(&mut self, bus: &mut Peripherals, dst: Imm8, val: u8) -> Option<()> {
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_bus`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/operand.rs:105:49
[INFO] [stdout]     |
[INFO] [stdout] 105 |     fn write8(&mut self, bus: &mut Peripherals, dst: Imm8, val: u8) -> Option<()> {
[INFO] [stdout]     |                                                 ^^^ help: if this is intentional, prefix it with an underscore: `_dst`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]    --> src/operand.rs:105:60
[INFO] [stdout]     |
[INFO] [stdout] 105 |     fn write8(&mut self, bus: &mut Peripherals, dst: Imm8, val: u8) -> Option<()> {
[INFO] [stdout]     |                                                            ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bus`
[INFO] [stdout]    --> src/operand.rs:128:27
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn write16(&mut self, bus: &mut Peripherals, dst: Imm16, val: u16) -> Option<()> {
[INFO] [stdout]     |                           ^^^ help: if this is intentional, prefix it with an underscore: `_bus`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/operand.rs:128:50
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn write16(&mut self, bus: &mut Peripherals, dst: Imm16, val: u16) -> Option<()> {
[INFO] [stdout]     |                                                  ^^^ help: if this is intentional, prefix it with an underscore: `_dst`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]    --> src/operand.rs:128:62
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn write16(&mut self, bus: &mut Peripherals, dst: Imm16, val: u16) -> Option<()> {
[INFO] [stdout]     |                                                              ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bus`
[INFO] [stdout]    --> src/operand.rs:254:26
[INFO] [stdout]     |
[INFO] [stdout] 254 |     fn read16(&mut self, bus: &Peripherals, src: Direct16) -> Option<u16> {
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_bus`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/operand.rs:254:45
[INFO] [stdout]     |
[INFO] [stdout] 254 |     fn read16(&mut self, bus: &Peripherals, src: Direct16) -> Option<u16> {
[INFO] [stdout]     |                                             ^^^ help: if this is intentional, prefix it with an underscore: `_src`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/operand.rs:258:50
[INFO] [stdout]     |
[INFO] [stdout] 258 |     fn write16(&mut self, bus: &mut Peripherals, dst: Direct16, val: u16) -> Option<()> {
[INFO] [stdout]     |                                                  ^^^ help: if this is intentional, prefix it with an underscore: `_dst`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/cpu.rs:551:13
[INFO] [stdout]     |
[INFO] [stdout] 551 |             _    => panic!("Not implemented: {:02x}", self.ctx.opcode),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/cpu.rs:551:13
[INFO] [stdout]     |
[INFO] [stdout] 295 |             0x00 => self.rlc(bus, Reg8::B),
[INFO] [stdout]     |             ---- matches some of the same values
[INFO] [stdout] 296 |             0x10 => self.rl(bus, Reg8::B),
[INFO] [stdout]     |             ---- matches some of the same values
[INFO] [stdout] 297 |             0x20 => self.sla(bus, Reg8::B),
[INFO] [stdout]     |             ---- matches some of the same values
[INFO] [stdout] 298 |             0x30 => self.swap(bus, Reg8::B),
[INFO] [stdout]     |             ---- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 551 |             _    => panic!("Not implemented: {:02x}", self.ctx.opcode),
[INFO] [stdout]     |             ^ ...and 252 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/cpu.rs:570:21
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     VBLANK => 0x0040,
[INFO] [stdout]     |                     ------ matches any value
[INFO] [stdout] 570 |                     STAT   => 0x0048,
[INFO] [stdout]     |                     ^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match against the value of constant `VBLANK` instead of introducing a new catch-all binding
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     interruputs::VBLANK => 0x0040,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/cpu.rs:571:21
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     VBLANK => 0x0040,
[INFO] [stdout]     |                     ------ matches any value
[INFO] [stdout] 570 |                     STAT   => 0x0048,
[INFO] [stdout] 571 |                     TIMER  => 0x0050,
[INFO] [stdout]     |                     ^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match against the value of constant `VBLANK` instead of introducing a new catch-all binding
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     interruputs::VBLANK => 0x0040,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/cpu.rs:572:21
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     VBLANK => 0x0040,
[INFO] [stdout]     |                     ------ matches any value
[INFO] [stdout] ...
[INFO] [stdout] 572 |                     SERIAL => 0x0058,
[INFO] [stdout]     |                     ^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match against the value of constant `VBLANK` instead of introducing a new catch-all binding
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     interruputs::VBLANK => 0x0040,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/cpu.rs:573:21
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     VBLANK => 0x0040,
[INFO] [stdout]     |                     ------ matches any value
[INFO] [stdout] ...
[INFO] [stdout] 573 |                     JOYPAD => 0x0060,
[INFO] [stdout]     |                     ^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match against the value of constant `VBLANK` instead of introducing a new catch-all binding
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     interruputs::VBLANK => 0x0040,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/cpu.rs:574:21
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     VBLANK => 0x0040,
[INFO] [stdout]     |                     ------ matches any value
[INFO] [stdout] ...
[INFO] [stdout] 574 |                     _ => panic!("Invalid interrupt: {:02X}", highest_int),
[INFO] [stdout]     |                     ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match against the value of constant `VBLANK` instead of introducing a new catch-all binding
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     interruputs::VBLANK => 0x0040,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `VBLANK`
[INFO] [stdout]    --> src/cpu.rs:569:21
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     VBLANK => 0x0040,
[INFO] [stdout]     |                     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `VBLANK`
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     interruputs::VBLANK => 0x0040,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 569 |                     _VBLANK => 0x0040,
[INFO] [stdout]     |                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `STAT`
[INFO] [stdout]    --> src/cpu.rs:570:21
[INFO] [stdout]     |
[INFO] [stdout] 570 |                     STAT   => 0x0048,
[INFO] [stdout]     |                     ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `STAT`
[INFO] [stdout]     |
[INFO] [stdout] 570 |                     interruputs::STAT   => 0x0048,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 570 |                     _STAT   => 0x0048,
[INFO] [stdout]     |                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `TIMER`
[INFO] [stdout]    --> src/cpu.rs:571:21
[INFO] [stdout]     |
[INFO] [stdout] 571 |                     TIMER  => 0x0050,
[INFO] [stdout]     |                     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TIMER`
[INFO] [stdout]     |
[INFO] [stdout] 571 |                     interruputs::TIMER  => 0x0050,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 571 |                     _TIMER  => 0x0050,
[INFO] [stdout]     |                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `SERIAL`
[INFO] [stdout]    --> src/cpu.rs:572:21
[INFO] [stdout]     |
[INFO] [stdout] 572 |                     SERIAL => 0x0058,
[INFO] [stdout]     |                     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `SERIAL`
[INFO] [stdout]     |
[INFO] [stdout] 572 |                     interruputs::SERIAL => 0x0058,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 572 |                     _SERIAL => 0x0058,
[INFO] [stdout]     |                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `JOYPAD`
[INFO] [stdout]    --> src/cpu.rs:573:21
[INFO] [stdout]     |
[INFO] [stdout] 573 |                     JOYPAD => 0x0060,
[INFO] [stdout]     |                     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `JOYPAD`
[INFO] [stdout]     |
[INFO] [stdout] 573 |                     interruputs::JOYPAD => 0x0060,
[INFO] [stdout]     |                     +++++++++++++
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 573 |                     _JOYPAD => 0x0060,
[INFO] [stdout]     |                     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scale`
[INFO] [stdout]   --> src/lcd.rs:11:27
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(sdl: &Sdl, scale: u32) -> LCD {
[INFO] [stdout]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_scale`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `low_bank`
[INFO] [stdout]   --> src/mbc.rs:55:17
[INFO] [stdout]    |
[INFO] [stdout] 55 |                 low_bank,
[INFO] [stdout]    |                 ^^^^^^^^ help: try ignoring the field: `low_bank: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0061, E0063.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `gbemu-rust` (lib test) due to 28 previous errors; 28 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "b3c0a72fbdcc0f0f9060dffbbc6f5a9126cf3be18412f721d4a60bb48ba8c2d5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b3c0a72fbdcc0f0f9060dffbbc6f5a9126cf3be18412f721d4a60bb48ba8c2d5", kill_on_drop: false }`
[INFO] [stdout] b3c0a72fbdcc0f0f9060dffbbc6f5a9126cf3be18412f721d4a60bb48ba8c2d5
